package com.frog.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiLimit {

    // 资源名称，用于描述接口功能，接口名
    String apiName() default "";

    // 资源 key
    String key() default "";

    // key prefix
    String prefix() default "limit";

    // 时间的，单位秒
    int period() default 0;

    // 限制访问次数
    int count() default 0;

    // 限制访问次数达到后锁定时间，分钟
    long lockupTime() default 0;

    // 限制类型
    LimitType limitType() default LimitType.CUSTOMER;


    enum LimitType{
        /** 传统类型 */
        CUSTOMER,
        /** 根据 IP 限制*/
        IP,
        /** 根据 userId 限制*/
        UID,
        /** 根据 设备id 限制*/
        DID

    }
}
